
// store/index.jsx
import {createStore, combineReducers} from 'redux'

// redux的持久化保存
import {persistReducer, persistStore} from "redux-persist";
import storage from "redux-persist/lib/storage";
 
import appReducer from "@/store/reducers/app";

// 合并多个模块中的 reducer 函数，并且返回一个新的 reducer 函数
const reducer = combineReducers({
    // key:value
    // key：它是在获取 state 数据时的命名空间名称，redux 中没有 dispatch 操作的命名空间名称
    // 如果你进行了 redux 模块化拆分，则需要注意 type 的类型名称不能重名，如果重名则都会执行
    // type: 以拆分后的文件名称为前缀：xxx_type 类型名，不会重名
    // value：拆分后的 reducr 纯函数
    appReducer
})

//创建reducer以及初始化状态
/* const reducer = (state = {
    count: 1
}, action) => {
    // action中type代表动作的标识，用于触发行为，payload代表传递的参数
    switch (action.type) {
        case 'ADD':
            return {...state,count:state.count+action.payload}
        case 'REDUCE':
            return {...state,count:state.count-action.payload}
        default:
            return state
    }
} */

//定义配置的信息
const persistConfig = {
    key: "root",
    storage: storage,
    // 如果不想将部分state持久化，可以将其放入黑名单(blacklist)中.黑名单是设置
    //   blacklist: ['ll']
}
//创建持久化的配置persist的信息
const persist_reducers = persistReducer(persistConfig, reducer);
 
/* //创建状态管理器
const store = createStore(reducer)
export default store */

//创建状态管理器
const store = createStore(persist_reducers)
const persistor = persistStore(store);

export {store, persistor}